/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package desarrollosoft.ghce.entidades;

import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

/**
 *
 * @author ariel
 */
@Entity
@DiscriminatorValue("TRATAMIENTO")
public class Tratamiento extends Elemento {

    @ManyToOne
    @JoinColumn(name = "medicamento_id", nullable = true)
    private Monodroga medicamento;
    
    @Column(name = "observaciones", nullable = false, columnDefinition="TEXT") // text para permitir ingresar mucho texto
    private String observaciones;
    
    public Tratamiento() {
        super();
    }

    public Monodroga getMedicamento() {
        return medicamento;
    }

    public void setMedicamento(Monodroga medicamento) {
        this.medicamento = medicamento;
    }

    public String getObservaciones() {
        return observaciones;
    }

    public void setObservaciones(String observaciones) {
        if (observaciones != null && observaciones.length() == 0) {
            this.observaciones = null;
        } else {
            this.observaciones = observaciones;
        }
    }

    @Override
    public String getTipificacion() {
        return "Tratamiento";
    }

    @Override
    public String getDescripcion() {
        if (medicamento != null) {
            return medicamento.getNombre();
        }
        if (observaciones.length() < 70) {
            return observaciones;
        }
        return observaciones.substring(0, 70);
    }

    public Tratamiento clonar() {
        Tratamiento tratamiento = new Tratamiento();
        
        tratamiento.setId(super.getId());
        tratamiento.setFecha(super.getFecha());
        tratamiento.setGravedad(super.getGravedad());
        tratamiento.setPaciente(super.getPaciente());
        tratamiento.setProfesional(super.getProfesional());
        tratamiento.setMedicamento(medicamento);
        tratamiento.setObservaciones(observaciones);
        
        return tratamiento;
    }
    
}
